Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

ПРОГРАМУВАННЯ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2012
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ  ЗВІТ до лабораторної роботи № 4 з дисципліни " Системне програмування" Львів – 2012 Тема: ПРОГРАМУВАННЯ СПІВПРОЦЕСОРА З ВИКОРИСТАННЯМ КОМАНД ОБЧИСЛЕННЯ ТРАНСЦЕНДЕНТНИХ ФУНКЦІЙ ТА РЕАЛІЗАЦІЯ РОЗГАЛУЖЕНЬ ПРИ ПОРІВНЯННІ ДАНИХ ДІЙСНОГО ТИПУ. Мета: познайомитися з принципами роботи математичного співпроцесора і використати його можливості для обчислення трансцендентних функцій та реалізації розгалужень. ЗАВДАННЯ 1. Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу. Вхідні дані повинні вводитися з клавіатури, під час виконання програми в десятковому форматі зі знаком. Програма повинна складатися з двох модулів: головний модуль – створюється мовою С і має забезпечити ввід необхідних даних, виклик асемблерної процедури для обчислення виразу та вивід результату обчислень; модуль безпосередніх обчислень – здійснює всі необхідні арифметичні дії з використанням математичного співпроцесора; 2.Переконатися у правильності роботи кожного модуля зокрема та програми загалом. 3.Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї. 4.Дати відповідь на контрольні запитання. ВАРІАНТИ ЗАВДАНЬ  Код програми: Main.cpp #include <stdio.h> #include <math.h> extern "C" float calc(float A,float C, float D); extern "C" { float A = 0; float C = 0; float D = 0; }; int main() { printf("if C > D -((lg(25+(2*A))/D)/(C+A-1)\n"); printf("if C <= D -((C+23)-(D+4)/(A-ln(A+(C/D)))\n"); printf("A = ");scanf_s("%f",&A); printf("C = ");scanf_s("%f",&C); printf("D = ");scanf_s("%f",&D); printf("asm: X = %f\n", calc(A,C,D)); // виклик файлу асм, ф-ції if (C> D) printf("c++: X = %f\n", ((log10(25+(2*A))/D))/(C+A-1)); else printf("c++: X = %f\n", (((C+23)-(D+4))/(A-log(A+(C/D))))); getchar();getchar(); return 0; }   Calc.asm .386 .model flat, c .data ;опис змінних Afl dd 0 Cfl dd 0 Dfl dd 0 tmp dd 0 tmp1 dd 0 .code calc proc push ebp mov ebp, esp mov eax,[ebp+8] mov Afl,eax mov eax,[ebp+12] mov Cfl,eax mov eax,[ebp+16] mov Dfl, eax fld Cfl fcomp Dfl fstsw ax sahf jbe var2 var1: (log10(25+(2*A))/D) fld Afl mov tmp,2 fild tmp fmul mov tmp,25 fild tmp fadd fstp tmp fld1 fld tmp fyl2x fldl2t fdivp ST (1),ST (0) fld Dfl fdiv fld Cfl fld Afl fadd fld1 fsub fdiv ;ділення: ((log10(25+(2*A))/D)) на (C+A-1) jmp next var2: fld Cfl fld Dfl fdiv fld Afl fadd fistp tmp fild tmp fld1 fldl2e fdivp fild tmp fyl2x fld Afl fsubr ;((C+23)-(D+4))) fld Cfl mov tmp,23 fild tmp fadd ;Cfl + 23 fld Dfl mov tmp,4 fild tmp fadd fsub ;((C+23)-(D+4))) віднімання fdivr ; ділення: ((C+23)-(D+4))) / (A-ln(A+(C/D)) next: pop ebp ret calc ENDP END   Результат виконання:   Висновок: Я оволодів навиками створення програм, частини яких написані різними мовами програмування Засвоїв правила взаємодії різних модулів.
Антиботан аватар за замовчуванням

20.05.2013 22:05

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини